////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// CppTestWrapper.h
// MathLib
//
// Created by Gregory Maksyuk on 10/23/10.
// Copyright 2010 Immersion Digital. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef CPP_TEST_WRAPPER_H
#define CPP_TEST_WRAPPER_H

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Includes

#include "cpptest.h"

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Definitions

namespace Test 
{
	class CppTestWrapper
	{
		Suite *testSuite;
		Output *suiteOutput;
		
	public:
		CppTestWrapper ();
		~CppTestWrapper ();
		
		/// Adds a test suite to execute upon run sequence
		void AddTestSuite (std::auto_ptr<Test::Suite> aTestSuite);
		
		/// Configures the output of the test system by parametert from command line
		void ConfigureOutputByCommandline (int argc, char *argv[]);
		
		/// Starts the testing sequence
		void RunTests ();
		
	private:
		Test::Output* GetOutputFromCommandline (int argc, char* argv[]);
		void PrintUsageInfoToCout ();
	};
}


#endif //CPP_TEST_WRAPPER_H